package com.piggy.logi.sys.api.vo;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.annotation.Excel;
import com.piggy.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 部门视图对象 logi_sys_dept
 *
 * @author piggy
 * @date 2023-08-10
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@ApiModel("部门视图对象")
public class LogiSysDeptVo extends BaseEntity {

	private static final long serialVersionUID = 1L;

	/** 部门id */
	@Excel(name = "部门id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("部门id")
	private Long deptId;

	/** 父部门id */
	@Excel(name = "父部门id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("父部门id")
	private Long parentId;

	/** 祖级列表 */
	@Excel(name = "祖级列表")
	@ApiModelProperty("祖级列表")
	private String ancestors;

	/** 部门名称 */
	@Excel(name = "部门名称")
	@ApiModelProperty("部门名称")
	private String deptName;

	/** 公司编码 */
	@Excel(name = "公司编码")
	@ApiModelProperty("公司编码")
	private String deptCode;

	/** 显示顺序 */
	@Excel(name = "显示顺序")
	@ApiModelProperty("显示顺序")
	private Integer orderNum;

	/** 负责人 */
	@Excel(name = "负责人")
	@ApiModelProperty("负责人")
	private String leader;

	/** 联系电话 */
	@Excel(name = "联系电话")
	@ApiModelProperty("联系电话")
	private String phone;

	/** 邮箱 */
	@Excel(name = "邮箱")
	@ApiModelProperty("邮箱")
	private String email;

	/** 部门类型 */
	@Excel(name = "部门类型")
	@ApiModelProperty("部门类型")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Integer deptType;

	/** 部门状态（0正常 1停用） */
	@Excel(name = "部门状态" , readConverterExp = "0=正常,1=停用")
	@ApiModelProperty("部门状态（0正常 1停用）")
	private String status;

	/** 服务商部门id */
	@Excel(name = "服务商部门id")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	@ApiModelProperty("服务商部门id")
	private Long mainDeptId;

	/** 删除标志（0代表存在 2代表删除） */
	@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
	@ApiModelProperty("删除标志（0代表存在 2代表删除）")
	private String delFlag;

	/** 创建者 */
	@Excel(name = "创建者")
	@ApiModelProperty("创建者")
	private String createBy;

	/** 创建时间 */
	@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("创建时间")
	private Date createTime;

	/** 创建开始时间 */
	@ApiModelProperty("创建开始时间")
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTimeBegin;

	/** 创建结束时间 */
	@ApiModelProperty("创建结束时间")
	@TableField(fill = FieldFill.INSERT)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date createTimeEnd;

	/** 更新者 */
	@Excel(name = "更新者")
	@ApiModelProperty("更新者")
	private String updateBy;

	/** 更新时间 */
	@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("更新时间")
	private Date updateTime;

	private String deptEmail;

	private String deptStatus;

	/** 部门类型 */
	@ApiModelProperty("部门类型,多选")
	@TableField(exist = false)
	private List<String> deptTypes = new ArrayList<>();

	/** 部门类型 */
	@ApiModelProperty("部门列表")
	@TableField(exist = false)
	private List<Long> deptIds = new ArrayList<>();

	/** 主部门id */
	@ApiModelProperty("服务商部门")
	@TableField(exist = false)
	private String mainDept;

}
